package negocio;

import beans.ProductoTo;

import dao.ProductoDAO;

import java.util.ArrayList;
import java.util.HashMap;

import utildb.Transaction;
import utildb.TransactionException;

public class ProductoManager {

    	public ProductoManager() {
		super();
	}	

	public void registrarProducto(ProductoTo to) throws ProductoManagerException {
		Transaction t = new Transaction();
		try {
			if(to.codigoVacio())
			    throw new ProductoManagerException("Código esta en blanco");
			else {
				ProductoDAO fact = new ProductoDAO(t);
				fact.create(to);
				t.commit();
			}
		} catch (TransactionException e) {
			t.rollback();
			throw new ProductoManagerException(e.getMessage());
		} finally {
			t.close();
		}
	}

	public void eliminarProducto( String crucProv, String codigo) throws ProductoManagerException {
		Transaction t = new Transaction();
		try {
			ProductoDAO dao = new ProductoDAO(t);
			dao.eliminarProducto(crucProv, codigo);
			t.commit();
		} catch (TransactionException e) {
			t.rollback();
			throw new ProductoManagerException(e.getMessage());
		} finally {
			t.close();
		}
	}

	public ArrayList buscarProductos(String crucProv, String codigo) throws ProductoManagerException, UsuarioManagerException {
		Transaction t = new Transaction();
		try {
			ProductoDAO dao = new ProductoDAO(t);
			ArrayList all = dao.buscarProductos(crucProv,codigo);
			t.close();
			return all;
		} catch (TransactionException e) {
			throw new ProductoManagerException(e.getMessage());
		} finally {
			t.close();
		}
	}

	public ProductoTo getProducto(String cRucProv, String cCodProd )
                                      throws ProductoManagerException, UsuarioManagerException {
		Transaction t = new Transaction();
		try {
			ProductoDAO dao = new ProductoDAO(t);
			ProductoTo to = dao.getProducto( cRucProv, cCodProd );
			t.close();
			return to;
		} catch (TransactionException e) {
			throw new ProductoManagerException(e.getMessage());
		} finally {
			t.close();
		}
	}

        public boolean existeProducto(String crucProv, String codigo) throws ProductoManagerException {
		Transaction t = new Transaction();
                boolean lb_okey = false;
		try {
			ProductoDAO dao = new ProductoDAO(t);
			lb_okey = dao.existeProducto(crucProv,codigo);
			t.close();
			return lb_okey;
		} catch (TransactionException e) {
			throw new ProductoManagerException(e.getMessage());
		} finally {
			t.close();
		}
	}

}
